Error Correction Codes (ECC) are used in a variety of systems and applications for protecting data from errors. Many popular ECC schemes use linear codes, such as Hamming, Reed-Solomon, Bose-Chaudhuri-Hocquenghem (BCH), Low Density Parity Check (LDPC) and Turbo codes. Some ECC decoding schemes use hard decoding, whereas other decoding schemes operate on soft decoding metrics such as Log Likelihood Ratios (LLRs).